1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package com.google.common.cache;
18
19 import com.google.common.annotations.Beta;
20 import com.google.common.base.Preconditions;
21 import com.google.common.collect.ForwardingObject;
22 import com.google.common.collect.ImmutableMap;
23
24 import java.util.Map;
25 import java.util.concurrent.Callable;
26 import java.util.concurrent.ConcurrentMap;
27 import java.util.concurrent.ExecutionException;
28
29 import javax.annotation.Nullable;
30
31
32
33
34
35
36
37
38
39 @Beta
40 public abstract class ForwardingCache<K, V> extends ForwardingObject implements Cache<K, V> {
41
42
43 protected ForwardingCache() {}
44
45 @Override
46 protected abstract Cache<K, V> delegate();
47
48
49
50
51 @Override
52 @Nullable
53 public V getIfPresent(Object key) {
54 return delegate().getIfPresent(key);
55 }
56
57
58
59
60 @Override
61 public V get(K key, Callable<? extends V> valueLoader) throws ExecutionException {
62 return delegate().get(key, valueLoader);
63 }
64
65
66
67
68 @Override
69 public ImmutableMap<K, V> getAllPresent(Iterable<?> keys) {
70 return delegate().getAllPresent(keys);
71 }
72
73
74
75
76 @Override
77 public void put(K key, V value) {
78 delegate().put(key, value);
79 }
80
81
82
83
84 @Override
85 public void putAll(Map<? extends K,? extends V> m) {
86 delegate().putAll(m);
87 }
88
89 @Override
90 public void invalidate(Object key) {
91 delegate().invalidate(key);
92 }
93
94
95
96
97 @Override
98 public void invalidateAll(Iterable<?> keys) {
99 delegate().invalidateAll(keys);
100 }
101
102 @Override
103 public void invalidateAll() {
104 delegate().invalidateAll();
105 }
106
107 @Override
108 public long size() {
109 return delegate().size();
110 }
111
112 @Override
113 public CacheStats stats() {
114 return delegate().stats();
115 }
116
117 @Override
118 public ConcurrentMap<K, V> asMap() {
119 return delegate().asMap();
120 }
121
122 @Override
123 public void cleanUp() {
124 delegate().cleanUp();
125 }
126
127
128
129
130
131
132
133 @Beta
134 public abstract static class SimpleForwardingCache<K, V> extends ForwardingCache<K, V> {
135 private final Cache<K, V> delegate;
136
137 protected SimpleForwardingCache(Cache<K, V> delegate) {
138 this.delegate = Preconditions.checkNotNull(delegate);
139 }
140
141 @Override
142 protected final Cache<K, V> delegate() {
143 return delegate;
144 }
145 }
146 }